package main

import (
	"fmt"
	"os"
)

type logSystem interface {
	consol(interface{})
	wfile(interface{})
}
type localLog struct{}

func (l localLog) consol(log interface{}) {
	loginfo := log.(string) + "\n"
	_, _ = os.Stdout.WriteString(loginfo)
}
func (l localLog) wfile(log interface{}) {
	logMsg := log.(string) + "\n"
	_, err := os.Stat("interface.log")
	if err != nil {
		fmt.Println("文件不存在!需要创建！")
		// fmt.Println(err)
		file, err := os.OpenFile("interface.log", os.O_APPEND|os.O_CREATE|os.O_EXCL, 0664) //|os.O_CREATE|os.O_EXCL
		if err != nil {
			// fmt.Println(err)
			fmt.Printf("创建打开文件，报错：%s", err)
		}
		defer file.Close()
		if _, err := file.WriteString(logMsg); err == nil {
			fmt.Println("写入文件成功！")
		} else {
			// fmt.Println("文件写入报错！")
			// fmt.Println(err)
			fmt.Printf("文件写入报错！，报错信息：%s", err)
		}
	} else {
		fmt.Println("文件存在！")
		// fmt.Println(fileStat)
		file, err := os.OpenFile("interface.log", os.O_APPEND, 0664) //|os.O_CREATE|os.O_EXCL
		if err != nil {
			fmt.Printf("打开文件错误，报错：%s", err)
		}
		defer file.Close()
		if _, err := file.WriteString(logMsg); err == nil {
			fmt.Println("写入文件成功！")
		} else {
			fmt.Println("文件写入报错！")
			fmt.Println(err)
		}
	}

}

func logger(log string) {
	// log := log
	var logger logSystem
	var application = localLog{}
	logger = application
	logger.consol(log)
	logger.wfile(log)

}
func main() {
	var word string = "阿里巴巴与四十大盗111!"
	logger(word)
}
